//内置类型
//Partial Required Readonly 修饰类型的
//Pick Omit 处理数据结构  Pick：选出指定属性；Omit：排除指定属性
//Exclude Extract 处理集合类型的  Extract：提取；Exclude：排除
//Paramters ReturnValues infer 
//字符串类型 模版字符串 `${}` + infer

//部分属性可选
interface Person{
    name:string
    age:number
    address:string
}

//1、选出可选属性
type PartialPropsOptional1<T extends object,K extends keyof T>=Partial<Pick<T,K>>
type P1=PartialPropsOptional1<Person,'name' | 'age'>

//2、部分属性可选
type PartialPropsOptional<T extends object,K extends keyof T>=Partial<Pick<T,K>> & Omit<T,K>
type Com<T>={
    [K in keyof T]:T[K]
}
type P2=Com<PartialPropsOptional<Person,'name' | 'age'>>


